﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace Volga_It.Hotels.Models
{
    /// <summary>
    /// Модель просмотр подробной информации об отеле
    /// </summary>
    public class HotelDetailsModels : HotelModels
    {
        /// <summary>
        /// Список предыдущих оценок пользователей
        /// </summary>
        public List<UserReviewModel> previousReviews { get; set; }
        /// <summary>
        /// Оценка данного пользователя
        /// </summary>
        public UserReviewModel currentUserReview;
        /// <summary>
        /// Средния оценка пользователей
        /// </summary>
        [Display(Name="Средняя оценка пользователей")]
        public float AvgRating { get; set; }

        public HotelDetailsModels()
        {
            this.previousReviews = new List<UserReviewModel>();
            this.currentUserReview = new UserReviewModel();
        }
        /// <summary>
        /// Конструктор модели с заполнением инфы HotelModels
        /// </summary>
        /// <param name="hotel">Экземпляр HotelModels, из которого берётся инфа</param>
        public HotelDetailsModels(HotelModels hotel)
        {
            this.previousReviews = new List<UserReviewModel>();
            this.currentUserReview = new UserReviewModel();
            this.Area = hotel.Area; this.City = hotel.City;
            this.Country = hotel.Country; this.Description = hotel.Description;
            this.HotelId = hotel.HotelId; this.ImageURL = hotel.ImageURL;
            this.Name = hotel.Name; this.Stars = hotel.Stars; this.WebSite = hotel.WebSite;
        }
    }
    /// <summary>
    /// Модель оценки отеля пользователями
    /// </summary>
    public class UserReviewModel
    {
        public int ReviewId { get; set; }
        public int HotelId { get; set; }

        [Required(ErrorMessage="Пожалуйста, поставьте оценку отелю.")]
        [Range(1,5)]
        public int Rating { get; set; }

        [DataType(DataType.MultilineText)]
        [Required(ErrorMessage="Пожалуйста, оставьте свой комментарий")]
        public string Comment { get; set; }

        [Required(ErrorMessage="Пожалуйста, введите своё имя.")]
        public string Username { get; set; }
    }
}